
package redeS.visualizacao;

/**
 * Enum que contém as constantes definidas para a classe P2PObserver.</br>
 * Obs.: Essa enum tem como objetivo padronizar e facilitar o envio de dados para a classe
 * P2PObserver, que analisa e imprime os resultados que você achar importante na simulação.
 * Quando for necessário analisar novos dados da simulação você poderá reaproveitar a classe
 * P2PObserver, apenas crie novas constantes nessa enum que representem os novos dados.
 * @author thiago-pc
 */
public enum P2PObserverConstants {
	
	/**
	 * Parâmetros do construtor (em ordem):
	 * ID: Como a informação dever ser tratado pelo observador.
	 * title: Título da informação.
	 */
	
	/**
	 * Tabela dos IDs:
	 * 0 - observador mostra todos os dados
	 * 1 - observador mostra o maior dos dados
	 * 2 - observador mostra o menor dos dados
	 * 3 - observador mostra a soma de todos os dados
	 * 4 - observador mostra a subtração de todos os dados (do primeiro dado que entrar)
	 * 5 - observador mostra a média de todos os dados
	 */
	
	/***/
	// Campo das Constantes. Adicione mais constantes aqui quando necessário.
	
	TITLE(0,""),
	
	MAXSIZE(1,"Tamanho máximo atingido pela rede"),
	MINSIZE(2,"Tamanho mínimo atingido pela rede"),
	VARIATION(4,"Variação do tamanho inicial e final da rede"),
	INNODES(3,"Número de nós que entraram na rede"),
	OUTNODES(3,"Número de nós que saíram da rede"),
	NEIGHBOURS(5,"Média de vizinhos de cada nó"),
	MAXNEIGHBOURS(1,"Número máximo de vizinhos em um nó"),
	
	DISCOVERED(5,"Média de nós descobertos (alcance) de cada nó"),
	DISCOVEREDFILES(5,"Média do total de arquivos disponíveis a cada nó em seus vizinhos descobertos (alcançáveis)"),
	SEARCHFOUND(3,"Número de buscas atendidas"),
	FIREWALLFOUND(3,"Número de buscas atendidas com resultados atrás de um firewall"),
	SEARCHNOTFOUND(3,"Número de buscas sem resultados"),
	SEARCHTIME(5,"Média do tempo de resposta (pelo menos um) das buscas que tiveram resultados"),
	
	MAXMESSAGES(1,"Número máximo de mensagens que um nó enviou em um ciclo"),
	TOTALDIFFERENTMESSAGES(1,"Total de mensagens diferentes enviadas"),
	TOTALPING(3,"Total de PINGs (re)enviados"),
	TOTALPONG(3,"Total de PONGs (re)enviados"),
	TOTALQUERY(3,"Total de QUERYs (re)enviados"),
	TOTALQUERYHIT(3,"Total de QUERYHITs (re)enviados"),
	TOTALPUSH(3,"Total de PUSHs (re)enviados");
		
	// Dados das constantes.
	public final int ID;
	public final String title;
	
	P2PObserverConstants(int ID, String title){
		this.ID = ID;
		this.title = title;
	}

}
